Networked storage systems are an emerging data communications environment in which a dedicated network connects storage devices via high-speed peripheral channels. The storage devices may be configured as a Redundant Array of Independent Disks (RAID), Just a Bunch of Disks (JBOD), or a combination of different storage topologies. In a networked storage system, the two primary performance variables are latency and bandwidth. Bandwidth is a measurement of how much data can move over the networked storage system over time, and latency is a measurement of how much delay is encountered between the execution of each command. Accordingly, system administrators strive to increase networked storage system performance by increasing the bandwidth and/or decreasing the latency.
One type of system optimization aimed primarily at lowering latency in a networked storage system is called caching, in which frequently or recently used data is stored in the fastest (but most expensive) storage device (usually semiconductor based random access memory). The high performance storage device filled with frequently or recently used data is the cache. Effective caching can significantly improve latency by minimizing the time required to service requests to frequently accessed data.
Caching can be performed at different points in a networked storage system. One of the key storage elements in storage systems, the hard disk drive, almost always has some amount of high speed solid state memory for caching operations local to the drive. In higher performance systems, the storage element controllers also provide data caching. Improving cache memory handling in the storage element controllers has the potential for dramatically increasing the overall performance of the entire networked storage system. Cache handling policies can be set at the storage element controller level to optimize the performance of a particular type of application. Different applications create different access patterns based on, for example, whether their access is pseudo-sequential or random in nature. Conventionally, caching policies are set globally, which usually means that they are tuned to whichever application is dominant in the networked storage system. This results in reduced performance when there is a mix of applications accessing a system.
There is also a growing need for systems that can virtualize multiple storage elements and allow networked storage systems the flexibility of creating virtual storage elements from multiple disparate physical storage subsystems. These network storage virtualizers benefit from cache memory architectures with similar attributes to those of storage controllers that directly control physical data storage resources. Increasing the granularity of cache policy control and management would enable a networked storage system controller/virtualizer to optimize performance across the entire RAID array, altering cache handling policies proactively to enhance application performance whether the correspondent traffic is pseudo-sequential or random.
Attempts have been made to optimize the setting and use of cache handling policies. Such a system is described in U.S. Pat. No. 6,163,773, “Data storage system with trained predictive cache management engine,” assigned to International Business Machines Corporation (Armonk, N.Y.), hereby incorporated by reference. This and other conventional systems for cache handling have been unable to provide the cache policy setting granularity and computational performance necessary for the system cost/performance point currently in demand.
It is therefore an object of the invention to enable greater granularity for setting caching policies in a networked storage system controller/virtualizer.
It is another object of the invention to enable tuning of specific volumes of a networked storage system controller/virtualizer to accessing software applications.
It is yet another object of the invention to increase the cache hit rate in a networked storage system controller/virtualizer.
It is yet another object of the invention to free up cache resources for other uses as quickly as possible.
It is yet another object of the present invention to set cache predictive read policy per volume.
It is yet another object of this invention to set write cache policy per volume.
It is yet another object of this invention to collect data to monitor and evaluate cache policies per on a host and volume basis.